#ifndef DELAYQUICKPARAMETESSET_H
#define DELAYQUICKPARAMETESSET_H

#include <QWidget>
#include "DelayDevice.h"
namespace Ui {
class DelayQuickParametersSet;
}

class DelayQuickParametersSet : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数
     * @param pDelayDevice 延迟设备对象指针
     * @param parent 父窗口指针
     */
    explicit DelayQuickParametersSet(DelayDevice* pDelayDevice, QWidget *parent = nullptr);
    
    /**
     * @brief 析构函数
     */
    ~DelayQuickParametersSet();

private slots:

    /**
     * @brief 设置按钮点击事件槽函数
     * @details 收集UI值并调用设备类设置参数
     */
    void on_btnSet_clicked();
    
    /**
     * @brief 取消按钮点击事件槽函数
     * @details 将UI恢复到设备的实际值
     */
    void on_btnCancel_clicked();

    /**
     * @brief 更新AD值
     */
    void onUpdateADValue();

private:
    
    /**
     * @brief 更新UI值为设备实际值
     * @details 调用initUIValues()方法实现UI值的更新
     */
    void updateUIValues();
    
    /**
     * @brief 收集UI值到参数映射表
     * @return QVariantMap 包含所有UI参数值的映射表
     * @details 将UI控件中的值收集到QVariantMap中，用于设置设备参数
     */
    QVariantMap collectUIValues() const;

signals:

    /**
     * @brief 日志写入信号
     * @param logInfo 日志信息
     * @param logLevel 日志级别（默认0）
     * @param isSave 是否保存到文件（默认false）
     */
    void writeLog(const QString& logInfo,int logLevel=0,bool isSave=false);

private:
    Ui::DelayQuickParametersSet *ui;
    //延时控制模块设备对象
    DelayDevice* m_pDelayDevice;
};

#endif // DELAYQUICKPARAMETESSET_H
